CAD software is used to fully define the shapes, position and movement of real world products. This is distinct from computer aided engineering (CAE) software, which is used to analyze physical characteristics of already defined products, such as strength or mechanism analysis.
The prior art in CAD software provides three major capabilities for an operator of the software, herein referred to a user. First, it provides the ability to create virtual accurate three-dimensional renderings, or part models, of real world parts. Second, it provides the ability to put these parts together to form virtual three dimension renderings of real world products or sub-products, also called assemblies in a process referred to herein as “assembling”. Third, it provides the ability to create documents and technical drawings the parts and assemblies from the virtual part models and virtual assembly models. The first two capabilities, defining the shape of parts and assembling parts, are typically highly iterative and interconnected processes.
As used herein, the terms “parts” and “assemblies” will be used to represent the virtual parts and virtual assemblies as they exist within a CAD computer system (also referred to herein as simply a “CAD computer”). CAD computers, generally, are well-known in the art and typically (although not exclusively) comprise a central processing unit (CPU), one or more graphics processors, a display device, one or more data storage devices (i.e., computer-readable medium or media, generally, such as disk drives, tape drives, RAM, ROM, compact disc ROM, DVD, and the like), a keyboard, a mouse or other pointing device (including but not limited to a pen or tablet system), and other related peripheral devices.
Parts and assemblies that exist in the real world will be referred to as “real world parts” and “real world assemblies.”
In addition to parts and assemblies, there also exist subassemblies. For example, a desk assembly could contain a drawer subassembly that contains a set of discrete parts. A subassembly is just an assembly that is contained in another assembly. Any assembly with multiple parts could be divided arbitrarily into different subassemblies or could be considered a one level assembly consisting only of discrete parts and no subassemblies. For the purposes of this application, it is sufficient and more straightforward to present the invention and the prior art using a one-level assembly only. However, the invention is equally applicable to multi-level assemblies.
The prior art of assembling is reduced to practice in several commercial CAD software products, including the Pro/ENGINEER® design software of Parametric Technology Corporation, the SOLIDWORKS® design software of SolidWorks Corporation, and the Autodesk Inventor® design software of Autodesk, Inc. Assembling is referred to by different names in different products, such as “assembly mating” or “assembly constraining”. In this document, it will simply be referred to as “assembling”. The prior art has been commercially available in mechanical CAD products in relatively the same form for approximately 20 years and has been used to successfully assemble assemblies ranging from two parts to tens of thousands of parts.
The primary method of assembling used in the prior art is as follows. The user creates geometric relationships between geometric entities existing in the parts to be assembled. For example, as shown in FIG. 1, the user could apply a coincident constraint between a planar face 100 on the first part 101 and a planar face 110 on the second part 111. This would result in one or both of the parts 101 and 111 moving in 3D space so that their respective planes 100 and 110 were coincident (FIG. 2). The above-described geometric relationship in the prior art is referred to herein as a “mate” and the process of using mates to do assembling in the prior art as “mating.”
Mating is the method by which the user applies mates to multiple parts in an assembly to move them into the correct orientations. The mates are processed by the software to define a system of constraints. These constraints are solved together to determine valid orientations of the parts. The parts are then moved by the software into those orientations. Solving the constraints is referred to as “constraint solving” and the software component used to perform the constraint solving is referred to as a “constraint solver”. The D-Cubed™ 3D Dimensional Constraint Manager (3D DCM) of Siemens Product Lifecycle Management Software is an example of such a constraint solver.
For the purposes of this application, the constraint solver can be viewed as a “black box”. The inputs to the constraint solver are: a set of constraints, a set of simple geometries referenced by the constraints, and a set of rigid bodies. Each rigid body contains a subset of the simple geometries. Each rigid body also has an orientation in 3D space that is typically represented by a transformation matrix. The outputs from the constraint solver are: a set of new orientations of the rigid bodies such that the rigid bodies conform to the input constraints and information about the remaining degrees of freedom of the rigid bodies.
FIG. 3 illustrates is a simple example of mating well known in the art. The user has already rigidly oriented box 300 on top of box 310 by creating three “coincident” mates between three pairs of planar faces on the boxes. The first coincident mate was created between planar face 301 on box 300 and planar face 311 on box 310. The second mate was created between planar face 302 and planar face 312. The third mate was created between planar face 313 and planar face on the underside of box 300 (which is not visible in the FIG. 3). Each coincident mate made its two faces coplanar and thus sharing the same plane in infinite space as shown. The constraints were solved together by the constraint solver and the one box was moved on top of the other as shown. In a similar manner, the two boxes could have been rigidly oriented by creating coincident mates between three aligning pairs of linear edges instead of the three faces. There are many additional combinations of face mates, edge mates, vertex mates, or other types of mates that could create the same rigid orientation between the two boxes.
As additional mates are added to the assembly, the orientations of parts are further defined and the internal degrees of freedom of movement between the parts are eliminated. In a fully rigid assembly in which no parts can move relative to the other parts, all six internal degrees of freedom between each part are eliminated by the mates. In the case where the assembly is designed to allow movement, which is typical in assemblies, fewer mates would be added than in the case of the fully rigid assembly. The remaining degrees of freedom then define the allowable movement of the assembly. Typically, in the prior art, the number of mates that are required to fully define the desired orientation and movement of an assembly is between two and three times the number of parts in the assembly. So, for example, an assembly containing 300 parts would typically contain between 600 and 900 mates.
Consider a similar case (FIG. 4) to that of the two boxes described in FIG. 3, but in which the user wants box 400 to be able to slide away from box 401 in a straight line. This movement is depicted by arrow 402. In this case, also well known in the art, the user would choose to create the first two mates as described in the FIG. 3 example, but would choose not to create the third mate, thus retaining the one degree of freedom as shown by arrow 402.
Another feature of the prior art is that it allows the user to visualize the movement of the assembly by animating the allowed movement. For example, the animation can be produced by interactively dragging a part in the assembly using the computer mouse. The part then moves as closely as possible to the orientation indicated by the moving mouse within the remaining degrees of freedom as defined by the mates and determined by the constraint solver.
Determining if and how one part can move relative to a part to which it is mated requires: converting the set of mates to a system of constraints, then analyzing the system of constraints to remove degrees of freedom from the system as a whole, then deducing the remaining degrees of freedom of the system as a whole, then examining those remaining degrees of freedom relative to the two parts to determine the allowable movement between those two parts. This analysis is typically performed in the prior art by the aforementioned constraint solver software component.
There are two types of mates in the prior art that are employed by the user much more than any other type. The first type is a coincident mate between two planes as described previously. The second type is a coincident mate between two infinite lines. The second type covers the cases of concentric revolved faces such as cylinders where the axes of the cylinders define infinite lines that are made coincident. This type is very common because it is used to align holes in attached parts. This is shown in FIG. 5, where cylindrical face 501 on part 500 is made coaxial with cylindrical face 511 on part 510.
In some cases, the prior art also supports higher order mates which more fully define the nature of the attachment between parts, such as cam-follower mates and hinge mates. For example, a hinge mate is the equivalent of a plane-to-plane coincident mate and a line-to-line mate, defining the kind of position and motion that exists between the two pieces of a hinge. However, in the prior art, the user is allowed to mix and match higher-order and lower-order mates to assemble the parts. In the prior art, the vast majority of mates used are lower order mates and it is not possible to define most realistic assemblies without using lower order mates.
Although the prior art has been used successfully to position parts to form assemblies in CAD software environments, it is desirable to provide a superior method of orienting parts that provides a more efficient and realistic method of assembling parts, thus allowing users to design products faster and more reliably.